<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <title>行列式</title>
    <meta charset="utf-8" />
    <link rel="stylesheet" type="text/css" href="../../css/note.css" />
</head>
<body>

<p class="example">
	<span class="formula">
		`R_n = |
			, , ,1;
			, ,1, ;
			,&#8944;, , ;
			1, , , ;
		|_(n xx n) = (-1)^((n(n-1))/2)`.
	</span>
    设 `bm R_n` 是这个行列式对应的矩阵,
    左乘 (右乘) `bm R_n` 的效果相当于将原矩阵的各行 (列) 倒排.
</p>

<p class="example">
  <b>鸡爪形行列式</b>
	对正整数 `n ge 2`,
	<span class="formula">`|
		a,x,cdots,x;
		y,z, , ;
		vdots, ,ddots, ;
		y, , ,z;
	|_n`
	`= {
		(a z-(n-1)x y) z^(n-2), if z != 0;
		-x y, if z = 0 and n = 2;
		0, if z = 0 and n gt 2;
	:}`
	</span>
</p>

<p class="proof">
	`z != 0` 时, 将后面各列的 `-y/z` 倍加到第一列, 原式等于
	<span class="formula">
	`|
		a-(n-1)x y z^-1,x,cdots,x;
		,z, , ;
		, , ddots, ;
		, , ,z;
	|`.
	</span>
	于是得到第一种情形. 另外两种情形是显然的.
</p>

<p class="example">
	对正整数 `n ge 2`,
	<span class="formula">`|
		x,y,cdots,y;
		y,x,cdots,y;
		vdots,vdots, ,vdots;
		y,y,cdots,x;
	|_n = (x-y)^(n-1) (x+(n-1)y)`.
	</span>
</p>

<p class="proof">
	先将第一行的 -1 倍加到其余各行, 再将其余各列加到第一列, 原式等于
	<span class="formula">
	`|
		x,y,cdots,y;
		y-x,x-y,cdots,0;
		vdots,vdots, ,vdots;
		y-x,0,cdots,x-y;
	|`
	`= |
		x+(n-1)y,y,cdots,y;
		0,x-y,cdots,0;
		vdots,vdots, ,vdots;
		0,0,cdots,x-y;
	|`
	`= (x-y)^(n-1) (x+(n-1)y)`.
	</span>
</p>

<p class="proof">
	加边法. 此法需要结合线性递推式来求解, 可能不是最简便的,
	但它的通用性较强.
	设原式等于 `D_n`, 则
	<span class="formula">
	`D_n =`
	`|
		1,-y,-y,cdots,-y;
		0,x,y,cdots,y;
		0,y,x,cdots,y;
		vdots,vdots,vdots, ,vdots;
		0,y,y,cdots,x;
	|_(n+1)`
	`=|
		1,-y,-y,cdots,-y;
		1,x-y,0,cdots,0;
		1,0,x-y,cdots,0;
		vdots,vdots,vdots, ,vdots;
		1,0,0,cdots,x-y;
	|_(n+1)`.
	</span>
	沿最后一列展开, 再将 `-y` 的余子式沿最后一行展开,
	<span class="formula">
		`D_n = (x-y) D_(n-1) + (-1)^(n+1+1) (-y) (-1)^(n+1) (x-y)^(n-1)`
		`= (x-y) D_(n-1) + y(x-y)^(n-1)`.
	</span>
	两边同除以 `(x-y)^(n-1)`,
	<span class="formula">
		`D_n/(x-y)^(n-1) = D_(n-1)/(x-y)^(n-2) + y`.
	</span>
	于是
	<span class="formula">
		`D_n = (x-y)^(n-1)(D_1/(x-y)^0 + (n-1) y)`
		`= (x-y)^(n-1) (x+(n-1)y)`.
	</span>
</p>

<p class="example">
    对正整数 `n ge 2`, `y != z`, 有
	<span class="formula">`|
		x,y,cdots,y;
		z,x,cdots,y;
		vdots,vdots,,vdots;
		z,z,cdots,x;
	|_n`
    `= (z(x-y)^n - y(x-z)^n)/(z-y)`.
	</span>
</p>

<p class="proof">
    设原式为 `D_n`, 则
    <span class="formula">
    `D_n =`
    `|
        z, y, y, cdots, y;
        z, x, y, cdots, y;
        z, z, x, cdots, y;
        vdots, vdots, vdots,,vdots;
        z, z, z, cdots, x;
    |`
    `+ |
        x-z, y, y, cdots, y;
        0, x, y, cdots, y;
        0, z, x, cdots, y;
        vdots, vdots, vdots,,vdots;
        0, z, z, cdots, x;
    |`
    `= |
        z, 0, 0, cdots, 0;
        z, x-y, 0, cdots, 0;
        z, z-y, x-y, cdots, 0;
        vdots, vdots, vdots,,vdots;
        z, z-y, z-y, cdots, x-y;
    | + (x-z) D_(n-1)`
    `= z(x-y)^(n-1) + (x-z) D_(n-1)`.
    </span>
    将 `y, z` 互换得
    <span class="formula">
        `D_n = y(x-z)^(n-1) (x-z) D_(n-1)`.
    </span>
    由两式得
    <span class="formula">
        `D_n = (z(x-y)^n - y(x-z)^n)/(z-y)`.
    </span>
</p>

<p class="example">
    对正整数 `n ge 2`,
    <span class="formula">
    `|
        1, 2, cdots, n-1, n;
        2, 3, cdots, n, 1;
        vdots, vdots, , vdots, vdots;
        n-1, n, cdots, n-3, n-2;
        n, 1, cdots, n-2, n-1;
    | = (-1)^((n(n-1))/2) (n^(n-1) (n+1))/2`.
    </span>
</p>

<p class="proof">
    [来自 颓废] 因为行列式行和相等, 我们将各列加到第一列. 原式等于
    <span class="formula">
    `(n(n+1))/2 |
        1, 2, 3, cdots, n-1, n;
        1, 3, 4, cdots, n, 1;
        1, 4, 5, cdots, 1, 2;
        vdots, vdots, vdots, , vdots, vdots;
        1, n, 1, cdots, n-3, n-2;
        1, 1, 2, cdots, n-2, n-1;
    |_n`
    `= (n(n+1))/2 |
        1, 0, 0, cdots, 0, 0;
        1, 1, 1, cdots, 1, 1-n;
        1, 2, 2, cdots, 2-n, 2-n;
        vdots, vdots, vdots, , vdots, vdots;
        1, n-2, -2, cdots, -2, -2;
        1, -1, -1, cdots, -1, -1;
    |_n`
    `= (n(n+1))/2 |
        1, 0, cdots, 0, -n;
        2, 0, cdots, -n, -n;
        vdots, vdots, , vdots, vdots;
        n-2, -n, cdots, -n, -n;
        -1, 0, cdots, 0, 0;
    |_(n-1)`
    `= (n(n+1))/2 R_(n-1) (-1)^(n-1) n^(n-2)`.
    </span>
    其中 `R_(n-1)` 表示将行列式各行倒排.
</p>

<p class="example">
  <b>三对角形行列式</b> `n` 为正整数, 求
	<span class="formula">
	`|
		y,z;
		x,y,z;
		 ,x,ddots,ddots;
		 , ,ddots,y,z;
		 , , ,x,y;
	|_n`
	</span>
</p>

<p class="proof">
	记原式等于 `D_n`, 按第一行展开,
	<span class="formula">
	`D_n = y D_(n-1) - z|
		x,z,cdots,0;
		0,,,;
		vdots,,D_(n-2),;
		0,,,;
	|`,
	</span>
	上面的行列式再按第一列展开得
	<span class="formula">
		`D_n = y D_(n-1) - x z D_(n-2)`.
	</span>
	求解这个线性递推式.
	若 `x z = 0`, 方程退化为 `D_n = y D_(n-1)`, 从而 `D_n = y^n`.
	否则解特征方程
	<span class="formula">
		`lambda^2 - y lambda + x z = 0`
	</span>
	得 `lambda_(1,2) = (y +- sqrt(y^2-4x z))//2`.
	`lambda_1 != lambda_2` 时, 通解为
	<span class="formula">
		`D_n = c_1 lambda_1^n + c_2 lambda_2^n`,<br/>
		`c_1 = (D_1 lambda_2-D_2)/(lambda_1(lambda_2-lambda_1))`,
		`quad c_2 = (D_2-lambda_1 D_1)/(lambda_2(lambda_2-lambda_1))`.
	</span>
	再代入初值 `D_1 = y`, `D_2 = y^2-x z` 即可.
	`lambda_1 = lambda_2 = y//2` 时, 通解为
	<span class="formula">
		`D_n = (c_1 + c_2 n) lambda_1^n`,<br/>
		`c_1 = 1/lambda_1(2D_1 - D_2/lambda_1)`,
		`quad c_2 = 1/lambda_1(D_2/lambda_1-D_1)`.
	</span>
	再代入初值得
	<span class="formula">
		`c_1 = (x z)/y^2`, `quad c_2 = 2 - (4x z)/y^2`.
	</span>
</p>

<p class="example" id="exp-friend-det">
  <b>友阵的特征多项式</b> 令 `f(x) = sum_(i=0)^n a_i x^i`, `a_n = 1`, 则
	<span class="formula">
	`|
		x,0,cdots,0,a_0;
		-1,x,cdots,0,a_1;
		0,-1,cdots,0,a_2;
		vdots,vdots, ,vdots,vdots;
		0,0,cdots,-1,x+a_(n-1);
	| = f(x)`.
	</span>
</p>

<p class="solution">
	对 `k = n-1, cdots, 2, 1`, 依次将第 `k+1` 行的 `x` 倍加到第 `k` 行上,
	原式等于
	<span class="formula">
		`|0, f(x); -bm E_(n-1) ,**|`
		`= (-1)^(n-1) |f(x), 0; **, -bm E_(n-1)|`
		`= f(x)`.
	</span>
</p>

<p class="example">
	<b>Vandermonde 行列式</b>
	对正整数 `n ge 2`,
	<span class="formula">`|
		1,x_1,cdots,x_1^(n-1);
		1,x_2,cdots,x_2^(n-1);
		vdots,vdots,,vdots;
		1,x_n,cdots,x_n^(n-1);
	| = prod_(1 le i lt j le n) (x_j - x_i)`.</span>
</p>

<p class="proof">
	对 `n` 进行归纳证明. `n = 2` 时原式等于 `x_2 - x_1`, 结论成立.
	设结论对 `n-1` 成立, 依次将原式第 `i` 列的 `-x_1` 倍加到第 `i+1` 列,
	`i = n-1, n-2, cdots, 1`, 得到
	<span class="formula">`|
		1,0,cdots,0;
		1,x_2-x_1,cdots,x_2^(n-2)(x_2-x_1);
		vdots,vdots,,vdots;
		1,x_n-x_1,cdots,x_n^(n-2)(x_n-x_1);
	|`.</span>
	按第一行展开后, 提出每一行的公因式, 得
	<span class="formula">`prod_(j=2)^n (x_j-x_1) |
		1,cdots,x_2^(n-2);
		vdots,,vdots;
		1,cdots,x_n^(n-2);
	|`.</span>
	由归纳假设, 上式等于
	<span class="formula">
		`prod_(1 le i lt j le n) (x_j-x_i)`.
	</span>
</p>

<p class="corollary">
	Vandermonde 行列式不等于 0 当且仅当 `x_1, x_2, cdots, x_n` 两两不相等.
</p>

<p class="example">
	求行列式
	<span class="formula">`|
		1, (x_1;1), cdots, (x_1;n-1);
		1, (x_2;1), cdots, (x_2;n-1);
		vdots, vdots, , vdots;
		1, (x_n;1), cdots, (x_n;n-1);
	|`.</span>
</p>

<p class="solution">
	将 `(x;k)` 看作关于 `x` 的 `k` 次多项式,
	依次将原式的前 `i` 列的某个线性组合加到第 `i+1` 列, 就可以消去
	第 `i+1` 列中的低次项, 使其只剩 `i` 次项, `i = 2, 3, cdots, n-1`.
	从而得到
	<span class="formula">`|
		1,x_1/(1!),cdots,x_1^(n-1)/((n-1)!);
		1,x_2/(1!),cdots,x_2^(n-1)/((n-1)!);
		vdots,vdots,,vdots;
		1,x_n/(1!),cdots,x_n^(n-1)/((n-1)!);
	|`.</span>
	利用 Vandermonde 行列式, 上式等于
	<span class="formula">
		`prod_(i=1)^(n-1) (i!)^-1 prod_(1 le i lt j le n) (x_j-x_i)`.
	</span>
</p>

<p class="example">
	设 `bm A in bbb P^(m xx n)`, `bm B in bbb P^(n xx m)`, 证明:
	<span class="formula">
		` |bm E_m - bm (AB)|
		= |bm E_n, bm B; bm A, bm E_m|
		= |bm E_m, bm A; bm B, bm E_n|
		= |bm E_n - bm (BA)|`.
	</span>
	当 `m != n`, 此公式可以用于降阶.
	如第一章的 Householder 矩阵的行列式为
	<span class="formula">
		`|bm E - 2 bm(alpha alpha')|`
		`= |bm E - 2 bm(alpha'alpha)|`
		`= -1`.
	</span>
</p>

<ol class="proof">
	<li>先证第一个等号. 由行列式的相关性质和矩阵的分块乘法,
		<span class="formula">
			` |bm E_m - bm (AB)|
			= |bm E_n, bm O; bm O, bm E_m - bm (AB)|`
			`= |bm E_n, bm O; -bm A, bm E_m|
			  |bm E_n, bm B; bm A, bm E_m|
			  |bm E_n, -bm B; bm O, bm E_m|
			= |bm E_n, bm B; bm A, bm E_m|`.
		</span>
		类似可以证明第三个等号.
	</li>
	<li>再证第二个等号.
		先交换左边行列式的前 `n` 列与后 `m` 列, 得到
		`|bm B, bm E_n; bm E_m, bm A|`.
		这可以通过把后 `m` 列逐列前移 `n` 个位置得到, 因此需要交换 `mn`
		次. 再交换它的前 `n` 行与后 `m` 行来得到右边的行列式; 同样需要
		`mn` 次交换. 由于交换行/列的次数是偶数, 行列式的值不变.
	</li>
</ol>

<ol class="example">
	正交矩阵 `bm A` 满足 `bm(A'A) = bm E`, 取行列式知 `|bm A|^2 = 1`.
	我们把行列式等于 1 的正交矩阵称为<b>第一类正交矩阵</b>, 行列式等于 -1
	的正交矩阵称为<b>第二类正交矩阵</b>.<br/>
	现在设 `bm A` 是 `n ge 3` 阶非零实矩阵, 则
	<li>`bm A` 是第一类正交矩阵当且仅当 `bm A' = bm A^**`;</li>
	<li>`bm A` 是第二类正交矩阵当且仅当 `bm A' = -bm A^**`.</li>
</ol>

<p class="proof">
	只证第一小题的充分性.
	于 `bm(A'A) = bm(A^** A) = |bm A|bm E` 两边取行列式有
	`|bm A|^2 = |bm A|^n`.  因为 `bm A` 非零,
	<span class="formula">
		`0 lt "tr"(bm(A'A)) = "tr"(|bm A|bm E) = n|bm A|`.
	</span>
	从而 `|bm A| gt 0`, 即 `|bm A| = 1`. 于是 `bm(A'A) = bm E`,
	`bm A` 为第一类正交矩阵.
</p>

<h3>Laplace 定理</h3>

[来自 <a href="https://www.jianshu.com/p/527a17b9e674">简书</a>]

<p class="definition">
	<b>子式, 余子式和代数余子式</b>
	令 `D` 为一个 `n` 阶行列式, `1 le k le n`. 在 `D` 上任意选定 `k` 行
	`k` 列, 位于这些行和列的交点上的 `k^2` 个元素按原来的 "上下左右"
	的次序组成一个 `k` 阶行列式 `M`, 称为 `D` 的一个 <b>`k` 阶子式</b>.
	若 `k lt n`, 在 `D` 中划去这 `k` 行 `k` 列后,
	余下的元素按原来的次序组成一个 `n-k` 阶行列式 `N`,
	称为 `M` 在 `D` 中的<b>余子式</b>. 由定义, `M` 也是 `N` 的余子式,
	因此又称 `M, N` 为一对互余的子式.
	如果 `M` 的各行, 列在原行列式 `D` 中的指标为 `i_1, i_2, cdots, i_k`
	和 `j_1, j_2, cdots, j_k`, 则称
	<span class="formula">
		`(-1)^(sum_(t=1)^k (i_t + j_t)) N`
	</span>
	为 `M` 在 `D` 中的<b>代数余子式</b>.
</p>

<p class="lemma">
	行列式 `D` 的任一子式 `M` 与它的代数余子式 `A` 的乘积中的每一项都是
	`D` 的展开式中的一项, 且符号一致.
</p>

<ol class="proof">
	<li>假设 `M` 是 `D_(n xx n) = |a_(ij)|` 的左上方的 `k` 阶子式, 即 `M`
		由 `D` 的前 `k` 行和前 `k` 列交叉处的元素组成, 则 `M`
		的每一项可以写作
		<span class="formula">
			`(-1)^(tau(i_1 i_2 cdots i_k))`
			`a_(1 i_1) a_(2 i_2) cdots a_(k i_k)`,
		</span>
		其中 `i_1 i_2 cdots i_k` 是 `1, 2, cdots, k` 的一个排列.
		而 `M` 的余子式 `N` 的每一项可以写作
		<span class="formula">
			`(-1)^(tau(j_1 j_2 cdots j_(n-k)))`
			`a_(k+1, j_1) a_(k+2, j_2) cdots a_(n, j_(n-k))`,
		</span>
		其中 `j_1 j_2 cdots j_(n-k)` 是 `k+1, k+2, cdots, n` 的一个排列.
		两个通项相乘得
		<span class="formula">
			`(-1)^(tau(i_1 i_2 cdots i_k j_1 j_2 cdots j_(n-k))`
			`a_(1 i_1) a_(2 i_2) cdots a_(k i_k)`
			`a_(k+1, j_1) a_(k+2, j_2) cdots a_(n, j_(n-k))`.
		</span>
		上式再乘以代数余子式的符号
		<span class="formula">
			`(-1)^(sum_(t=1)^k (t+t)) = 1`
		</span>
		即为 `D` 的展开式中的一项, 且符号一致.
	</li>
	<li>下证一般情形, 设 `M` 位于 `D` 的第 `i_1, i_2, cdots, i_k` 行,
		第 `j_1, j_2, cdots j_k` 列, 其中
		`i_1 lt i_2 lt cdots lt i_k`, `j_1 lt j_2 lt cdots lt j_k`.
		作行列的对换, 将 `M` 移到 `D` 的左上角:
		先把第 `i_1` 行依次与第 `i_1-1, i_1-2, cdots, 2, 1` 行对换,
		经过 `i_1-1` 次对换而将它换到第 1 行.
		再将第 `i_2` 行依次与第 `i_2-1, i_2-2, cdots, 2` 行对换,
		经过 `i_2-2` 次对换而将它换到第 2 行...
		如此下去, 经过 `sum_(t=1)^k (i_t-t)` 次对换, 把第 `i_1, i_2,
		cdots, i_k` 行换到第 `1, 2, cdots, k` 行.
		类似地经过 `sum_(t=1)^k (j_t-t)` 次列对换, 可将第 `j_1, j_2,
		cdots, j_k` 列换到第 `1, 2, cdots, k` 列.
		从而变换前后, 行列式 `D` 的值相差一个符号
		<span class="formula">
			`(-1)^(sum_(t=1)^k (i_t+j_t))`.
		</span>
		恰为 `M` 的代数余子式前的符号因子, 因此 `M`
		与它的代数余子式乘积中的每一项都是 `D` 的展开式中的一项,
		且符号一致.
	</li>
</ol>

<p class="theorem">
	<b>Laplace 定理</b>
	`n` 阶行列式的值等于它的任意 `k` (`1 le k le n-1`) 行 (列)
	中所含有的全体 `k` 阶子式与相应代数余子式的乘积的和.
</p>

<p class="proof">
	由行列式行和列的对称性, 只证行的情形.
	设 `n` 阶行列式 `D` 中取定 `k` 行后得到的子式为 `M_i`,
	相应的代数余子式为 `A_i`, `i = 1, 2, cdots, s`. 下证
	<span class="formula">
		`D = sum_(i=1)^s M_i A_i`.
	</span>
	显然, `M_i A_i` 中每一项都是 `D` 的展开式中的一项且符号一致,
	且 `i!=j` 时, `M_i A_i` 与 `M_j A_j` 无公共项.
	因此要证结论成立, 只需指出等式左右含展开式的项数相等.
	由于 `n` 阶行列式的展开式有 `n!` 项, 故等式左端有 `n!` 项.
	而由子式的取法知 `s = (n;k)`, 故等式右端的项数为
	<span class="formula">
		`(n;k) k! (n-k)! = n!`.
	</span>
	证毕.
</p>

<h2>Cramer 法则</h2>

<p>我们从一个简单例子来看, 如何用行列式求解线性方程组.</p>

<p class="example">
  <b>三元一次方程组的 Cramer 法则</b> [2018.10] 设
  <span class="formula">
  `{
    a_11 x_1 + a_12 x_2 + a_13 x_3 = b_1;
    a_21 x_1 + a_22 x_2 + a_23 x_3 = b_2;
    a_31 x_1 + a_32 x_2 + a_33 x_3 = b_3;
  :}`
  </span>
  于是
  <span class="formula">
  `|b_1, a_12, a_13; b_2, a_22, a_23; b_3, a_32, a_33|`
  `= |a_11 x_1 + a_12 x_2 + a_13 x_3, a_12, a_13;
    a_21 x_1 + a_22 x_2 + a_23 x_3, a_22, a_23;
    a_31 x_1 + a_32 x_2 + a_33 x_3, a_32, a_33|`
  `= |a_11 x_1, a_12, a_13; a_21 x_1, a_22, a_23; a_31 x_1, a_32, a_33|`
  `+ |color(red)(a_12) x_2, color(red)(a_12), a_13;
      color(red)(a_22) x_2, color(red)(a_22), a_23;
      color(red)(a_32) x_2, color(red)(a_32), a_33|`
  `+ |color(red)(a_13) x_3, a_12, color(red)(a_13);
      color(red)(a_23) x_3, a_22, color(red)(a_23);
      color(red)(a_33) x_3, a_32, color(red)(a_33)|`
  `= |a_11, a_12, a_13; a_21, a_22, a_23; a_31, a_32, a_33| x_1 + 0 + 0`.
  </span>
  后两项等于零是因为它们存在成比例的列.
  最后, 系数行列式不为零时, 将它除到分母上得到
  <span class="formula">
    `x_1 = |b_1, a_12, a_13; b_2, a_22, a_23; b_3, a_32, a_33| //
    |a_11, a_12, a_13; a_21, a_22, a_23; a_31, a_32, a_33|`.
  </span>
  本节我们将这种方法推广到 `n` 元线性方程组, 称为 <b>Cramer 法则</b>.
</p>

<p class="lemma">
	令 `bm  A = (a_(i j))_(n xx n)`, 以 `A_(i j)` 记元素 `a_(i j)`
	的代数余子式, 则
	<span class="formula">
		`sum_(k=1)^n a_(i k) A_(j k) = delta_(i j) |bm A|`,
		`quad sum_(k=1)^n a_(k i) A_(k j) = delta_(i j) |bm A|`,
		`quad i,j in [n]`.
	</span>
</p>

<p class="proof">
	只证第一式. 若 `i = j`, 等式左边等于 `|bm A|` 沿第 `i` 行展开的结果,
	自然等于右边. 若 `i != j`, 等式左边等于将 `|bm A|` 的第 `j` 行用第 `i`
	行的拷贝替换后, 沿第 `j` 行展开的结果. 由于这个替换后的行列式的第 `j`
	行与第 `i` 行完全相同, 所以它等于零.
</p>

<p class="definition">
	如果 `|bm A| != 0`, 则称方阵 `bm A` <b>非奇异</b>.
</p>

<p class="definition">
	设 `bm A` 是阶数 `ge 2` 的方阵,
	<span class="formula">
		`bm A^** := [
			A_11,A_21,cdots,A_(n1);
			A_12,A_22,cdots,A_(n2);
			vdots,vdots, ,vdots;
			A_(1n),A_(2n),cdots,A_(n n);
		]`
	</span>
	称为 `bm A` 的<b>伴随矩阵 (adjugate matrix)</b>, 也记为 `"adj" bm A`.
	注意伴随矩阵的 `i j` 元等于 `a_(j i)` 的代数余子式.
</p>

<p class="theorem">
	<b>方阵逆的结构公式</b>
	方阵 `bm A` 可逆当且仅当它非奇异, 此时有
	<span class="formula">
		`bm A^-1 = (bm A^**)/|bm A|`.
	</span>
	这个公式适用于计算二阶矩阵的逆:
	<span class="formula">
		`[a,b;c,d]^-1`
		`= 1/(a d-b c) [d,-b;-c,a]`,
	</span>
	但是当矩阵的阶数较大时, 计算量很大, 所以并不适用.
</p>

<p class="proof">
	"`rArr`": 若 `bm A` 可逆, 则存在方阵 `bm B` 使得
	`bm(A B) = bm(B A) = bm E`, 从而 `|bm A||bm B| = 1`,
	所以 `|bm A| != 0`.<br/>
	"`lArr`": 若 `bm A` 非奇异, 利用引理计算得,
	`bm (A A^**) = bm (A^** A) = |bm A| bm E`,
	从而得到 `bm A^-1`.
</p>

<p>	从而得到第一章注释中的推论:</p>

<p class="corollary">
	若方阵 `bm A, bm B` 满足 `bm(A B) = bm E`, 则 `bm A, bm B` 都可逆,
	事实上它们互逆.
</p>

<p class="corollary">
	若 `bm A_(n xx n)` 可逆, 则由 `bm A^** bm A = |bm A|bm E` 得到
	`|bm A^**| = |bm A|^(n-1)`.
</p>

<p class="remark">
	若 `bm A` 不可逆, 则 `|bm A^**| = 0`.
	我们将在第三章利用秩的理论给出一个证明.
</p>

<p class="theorem" id="the-homogeneous-nonzero-solution-iff">
	设 `bm A in bbb P^(n xx n)`, `bm X, bb 0 in bbb P^(n xx 1)`,
	则<b>齐次线性方程组</b> `bm(A X) = bb 0`
	存在非零解当且仅当其系数矩阵 `bm A` 奇异.
</p>

<ol class="proof">
	首先指出, 原方程组总是有解 `bm X = bb 0`, 称为<b>零解</b>.
	<li>设 `bm A` 非奇异, 即 `bm A` 可逆.
		设存在 `bm X` 满足 `bm(A X) = bb 0`, 则
		<span class="formula">
			`bm X = bm(A^-1 A X) = bm A^-1 bb 0 = bb 0`.
		</span>
		即原方程只有零解.
	</li>
	<li>设 `bm A` 奇异, 考虑 `bm A` 的等价标准形 `bm overset ~ A`.
		我们知道, 方程组在增广矩阵的行初等变换下,
		以及不涉及最后一列的列初等变换下保持同解 (涉及列初等变换时,
		同解是在适当重排变量次序的意义下的).
		注意到齐次线性方程组的增广矩阵的最后一列全为零,
		从而原方程组可以通过上述变换变成 `bm(overset ~ A X) = bb 0`,
		即它们同解.<br/>
		因为初等变换不能将一个矩阵的行列式从零变成非零,
		也不能将它从非零变成零, 所以
		`|bm A| = 0` 当且仅当 `bm overset ~ A` 含有零列.
		设 `bm overset ~ A` 的第 `j` 列全为零, 则单位列向量 `bm epsi_j`
		就是 `bm(overset ~ A X) = bb 0` 的一个非零解,
		从而也是原方程组的一个非零解.
	</li>
</ol>

<p class="theorem">
	<b>Cramer 法则</b>
	设 `bm A in bbb P^(n xx n)`, `bm X, bm B in bbb P^(n xx 1)`,
	则线性方程组 `bm(A X) = bm B` 有唯一解当且仅当 `bm A` 非奇异,
	且此时解的表达式为:
	<span class="formula">
		`bm X = bm(A^-1 B)`
		`= 1/|bm A| (|bm A_1|, |bm A_2|, cdots, |bm A_n|)'`,
	</span>
	其中 `bm A_i` 是用 `bm B` 取代 `bm A` 的第 `i` 列所得的矩阵,
	`i in [n]`.
</p>

<ol class="proof">
	<li>"`lArr`": 设 `bm A` 非奇异, 即 `bm A` 可逆,
		`bm X = bm A^-1 bm B` 即为方程组的一个解, 这证明了解的存在性.
		设又有 `bm Y` 满足 `bm(A Y) = bm B`, 则
		<span class="formula">
			`bm Y = bm(A^-1 A Y) = bm(A^-1 B) = bm X`.
		</span>
		这证明了解的唯一性.
	</li>
	<li>"`rArr`": 设 `bm X` 是方程组 `bm(A X) = bm B` 的唯一解,
		反设 `bm A` 奇异, 则由<a class="ref"
		href="#the-homogeneous-nonzero-solution-iff"></a>,
		存在 `bm Y != bb 0` 使得 `bm(A Y) = bb 0`. 从而
		<span class="formula">
			`bm(A(X+Y)) = bm(A X) + bm(A Y) = bm B`,
		</span>
		而 `bm(X+Y) != bm X`, 与解的唯一性矛盾. 故 `bm A` 非奇异.
	</li>
	<li>下面证明解的第二个表达式.
		首先将 `|bm A_i|` 按第 `i` 列展开得
		<span class="formula">
			`|bm A_i| = (A_(1 i), A_(2 i), cdots, A_(n i)) bm B`.
		</span>
		从而
		<span class="formula">
			`1/|bm A| (|bm A_1|, |bm A_2|, cdots, |bm A_n|)'`
			`= 1/|bm A| [
				(A_11, A_21, cdots, A_(n1))bm B;
				(A_12, A_22, cdots, A_(n2))bm B;
				vdots;
				(A_(1n), A_(2n), cdots, A_(n n))bm B;
			]`
			`= 1/|bm A| bm A^** bm B`
			`= bm(A^-1 B)`.
		</span>
	</li>
</ol>

<ol class="proof">
	<li>解的表达式的另一证法.
		设 `bm epsi_i` 为第 `i` 个分量等于 1, 其余分量等于 0 的 `n`
		维单位列向量, 则 `bm A` 的 `n` 个列向量可以写成
		<span class="formula">
			`bm(A epsi_1), bm(A epsi_2), cdots, bm(A epsi_n)`.
		</span>
		若存在列向量
		<span class="formula">
			`bm X = (x_1, x_2, cdots, x_n)'`
		</span>
		使得 `bm(A X) = bm B`, 则对任意 `i in [n]`,
		<span class="formula">
			`bm A(bm epsi_1, cdots, bm epsi_(i-1), bm X, bm epsi_(i+1),
			cdots, bm epsi_n)`
			`= (bm(A epsi_1), cdots, bm(A epsi_(i-1)), bm(A X), bm(A
			epsi_(i+1)), cdots, bm(A epsi_n))`
			`= bm A_i`.
		</span>
		上式两边取行列式, 注意
		<span class="formula">
			`|bm epsi_1, cdots, bm epsi_(i-1), bm X, bm epsi_(i+1),
			cdots, bm epsi_n| = x_i`,
		</span>
		有
		<span class="formula">
			`x_i = |bm A_i|/|bm A|`,
			`quad i in [n]`.
		</span>
	</li>
	<li>解的表达式的又一证法. 记
		<span class="formula">
			`bm A = (bm alpha_1, bm alpha_2, cdots, bm alpha_n)`,
		</span>
		若存在列向量
		<span class="formula">
			`bm X = (x_1, x_2, cdots, x_n)'`
		</span>
		使得 `bm(A X) = bm B`, 则对任意 `i in [n]`,
		<span class="formula">
			`|bm A_i|`
			`= |bm alpha_1, cdots, bm alpha_(i-1), bm(A X),
			bm alpha_(i+1), cdots, bm alpha_n|`
			`= |bm alpha_1, cdots, bm alpha_(i-1), sum_(j=1)^n x_j bm
			alpha_j, bm alpha_(i+1), cdots, bm alpha_n|`
			`= sum_(j=1)^n |bm alpha_1, cdots, bm alpha_(i-1),
			bm alpha_j, bm alpha_(i+1), cdots, bm alpha_n| x_j`
			`= |bm A| x_i`.
		</span>
	</li>
</ol>

<p class="remark">
	用 Cramer 法则求解二元一次方程组
	<span class="formula">`{
		a x + b y = u;
		c x + d y = v;
	:}`</span>
	得 `(x,y) = 1/(a d-b c)(|u,b;v,d|, |a,u;c,v|)`.
	但当方程组规模较大时, Cramer 法则的计算量很大.
</p>

<script src="../../js/note.js?type=math"></script>
</body>
</html>
